当前位置:  技术问答>linux和unix

C++中system函数返回-1的问题

    来源: 互联网  发布时间:2016-05-30

    本文导语:  我们的工程中在Linux64位平台上有一个地方调用外部的一个名为step的程序,该程序为32位,在C++语言中用system函数来调用: error_flag = system(my_command); 结果运行的时候外面的那个程序也启动起来了,在命令行窗口中看...

我们的工程中在Linux64位平台上有一个地方调用外部的一个名为step的程序,该程序为32位,在C++语言中用system函数来调用:
error_flag = system(my_command);
结果运行的时候外面的那个程序也启动起来了,在命令行窗口中看到运算过程,写出的文件也没有问题,结果也是正确的,但是最后error_flag返回值就是为-1,
我想查看一下errno,就加了这么两句:
printf("errno = %dn", errno);
结果打印出来的errno居然是0!没有错误,可system的返回值就是-1。

我于是另外写了一个小程序;
------------------------------------------
#include 
#include 
#include 

int main()
{
        char com[1024];
        int ret;

        sprintf( com, "/home/eta/step/step32 uppad_step 2000000 0" );
        ret =  system( com );
        printf( " ret = %dn", ret );
}
--------------------------------------------------
还是编译出64位程序去调用那个32位的程序step,一切都很正常,ret也等于0.

我就是很奇怪为什么在我们的工程中调用step就是返回-1,返回-1也就算了,为什么errno居然还是0?
太奇怪了


|
貌似真的很奇怪...
你的那个代码如何写的...

|
这么诡异,那你试下用fork+execl来运行一下,容易跟踪代码.

|
关于errno的问题,有点象我前阵子碰到过的一个问题。
看看这篇文章,看有没有帮助。
http://blog.csdn.net/mosaic/archive/2009/02/03/3860576.aspx

|
貌似 errno 只记录最后一个调用的哦,中间如果有其他函数调用(不是自己实现的),那就是打印的位置选择的不当哦...

|
看看这个帖子吧
http://topic.csdn.net/u/20080126/09/b449d0cb-d93f-43ec-a28f-0d1fdf762e76.html



|
我也奇怪~~帮顶吧

|
不对errno是你这个进程中的全局变量,system会fork另外一个子进程,system出来的子进程不能写本进程内的errno变量.
所以父进程中的errno会是0.

    
 
 

您可能感兴趣的文章:

  • c++下的外部参数传入system()
  • C++是否可以直接调用所有的system call?
  • POSIX.1要求system忽略SIGINT和SITQUIT,阻塞SIGCHLD,求解释。UNIX环境高级编程 system函数
  • system()函数返回什么值时,该函数执行成功?返回什么值时,执行出现错误?谢谢
  • linux c入门问题,大家指教。system函数和exec函数的区别。
  • 在线等,请问system函数返回值是什么值,怎么判断system运行是否成功?
  • 1。 新建目录的函数是那个? 2。Busybox对C的system函数支持没问题?
  • 关于linux下system函数编程
  • 急问:Linux程序中,使用system函数的几个问题
  • 关于system()函数的问题
  • system()函数用法
  • 调用system(“命令”)和函数调用之间有什么不同?效率?
  • 有关system函数打开网页的
  • system函数执行失败
  • linux system函数调用问题
  • system函数返回值是5,是表示什么意思?
  • 帮忙找找system函数的实现
  • Unix下System函数实现中为何要使用shell去调用执行程序?
  • linux平台下system函数的使用问题
  • 有关system()这个函数
  • 请问如何用system函数切换到root用户
  • linux下system 函数调用不成功,怎么回事?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • system() 返回值问题
  • 怎样获得system的返回值?
  • linux 下 system() 返回值--续
  • linux 下 system() 返回值
  • 关于程序里面system不返回的问题
  • system()函数返回值0,但却没有执行成功?
  • system的返回值为什么总是乘以了256
  • 在Linux系统上recv返回错误,通过errno得到的错误消息为"Interrupted system call"
  • 请高手指点.关于system()函数不返回问题.<<含源码>>
  • 请问怎么才C语言中得到system调用的内核命令的返回信息???????????????????
  • 同样的程序,语句system在red3up9(32位)上运行正常,而在red4up5(64位)上运行却返回-1???
  • 关于用system去调用shell命令时获取的返回值的问题,急!!!!!
  • 为何int ret=system("cmd") 不能返回正确的返回值。
  • 在ubuntu下,system函数的返回值
  • 好奇怪,system()调用的返回值怎么得不到
  • java命名空间javax.sound.midi类shortmessage的类成员方法: system_reset定义及介绍
  • System.exit(0);和System.exit(1)有什么区别?
  • java命名空间javax.swing.text.html.parser接口dtdconstants的类成员方法: system定义及介绍
  • 请问System.out.print和System.out.printIn有什么不同?
  • java命名空间javax.sound.midi类sysexmessage的类成员方法: system_exclusive定义及介绍
  • 谁有 novell 3.12 的SYSTEM_1 和 SYSTEM_2 的软盘内容吗?[分不够可增加]
  • java命名空间javax.xml.transform类outputkeys成员方法: doctype_system定义参考
  • 请问java.lang.System是一个类吧??那么System.out.print()中的out充当什么角色呢?还是类???
  • java命名空间javax.swing类jfilechooser的类成员方法: file_system_view_changed_property定义及介绍
  • 现在用 System.exit(0) or System.exit(1) 来退出弹出窗口,但是连父窗口一起关闭(紧急求解)
  • java命名空间java.lang.management类managementfactory的类成员方法: operating_system_mxbean_name定义及介绍
  • System.out.println() 和System.err.println()有什么区别?THANKS
  • java命名空间java.lang类system的类成员方法: in定义及介绍
  • 深入解析System.load 与 System.loadLibrary
  • java命名空间javax.print.attribute.standard类jobstatereason的类成员方法: aborted_by_system定义及介绍
  • catch异常的时候用System.out.print()和用System.err.print()来输出有什么区别啊?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3