免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: fwizard
打印 上一主题 下一主题

[函数] 请教如何判断system函数执行完成 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-11-22 11:23 |只看该作者
查到一个例子,大家看看

  1. #inlucde <wait.h>
  2. ...
  3.    sprintf(szCommand, "compress -fc %s > %s.Z", szFilePath, szFilePath);
  4.    iStatus = system(szCommand);
  5.    if (WIFEXITED(iStatus) && WEXITSTATUS(iStatus) == 0) /* Compress success */
  6.    {
  7.       strcat(pstMsgHeader->acFileName, ".Z";
  8.    }
  9.    else
  10.    {
  11.       printf("Compress file <%s> fail with exit status %d.",
  12.          szFilePath, WEXITSTATUS(iStatus)) ;
  13.       return -1;
  14.    }
复制代码

论坛徽章:
0
12 [报告]
发表于 2005-11-22 11:26 |只看该作者
sleep和access也许能解决这个具体的问题
但是不是根本的办法,别的地方不符合这个特征的又该怎么办呢?

论坛徽章:
0
13 [报告]
发表于 2005-11-22 11:46 |只看该作者
原帖由 assiss 于 2005-11-22 10:24 发表
RETURN VALUE
The value returned is -1 on error (e.g. fork failed), and the return status of the command otherwise. This latter return status is in the format specified in wait(2). Thus, the exit c ...

学习

论坛徽章:
0
14 [报告]
发表于 2005-11-22 11:52 |只看该作者
原帖由 fwizard 于 2005-11-22 11:26 发表
sleep和access也许能解决这个具体的问题
但是不是根本的办法,别的地方不符合这个特征的又该怎么办呢?

晕。你11楼的程序不能从根本上解决你的问题?

论坛徽章:
0
15 [报告]
发表于 2005-11-22 11:54 |只看该作者
The system() function returns the exit status of the shell as returned by
     waitpid(2), or -1 if an error occurred when invoking fork(2) or
     waitpid(2).  A return value of 127 means the execution of the shell
     failed.


在freebsd上 man system中的一段.

论坛徽章:
0
16 [报告]
发表于 2005-11-22 11:59 |只看该作者
原帖由 assiss 于 2005-11-22 10:27 发表
如果实在需要确认,不如用POPEN或者EXEC家族函数。


能否给个简单的例子

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
17 [报告]
发表于 2005-11-22 12:15 |只看该作者
fork+wait,比system来的专业的多

论坛徽章:
0
18 [报告]
发表于 2005-11-22 15:27 |只看该作者
原帖由 assiss 于 2005-11-22 11:52 发表

晕。你11楼的程序不能从根本上解决你的问题?

没看明白你的意思
不知道前几楼贴你看了没有?

论坛徽章:
0
19 [报告]
发表于 2005-11-22 15:40 |只看该作者
sleep没有用。
apue中的第八章说的挺明白的。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2005-11-22 15:44 |只看该作者
原帖由 fwizard 于 2005-11-22 10:12 发表
以前用system函数没有想太多,都是直接用一下.现在感觉用这个函数是一定要判断它是否以正常执行完.
例:

  1. ...
  2. system("rm 123.txt");
  3. i++;
  4. ...
复制代码

如果是这样的话,有可能123文件还没有 ...


if (system("rm 123.txt >/dev/null 2&1;") == 0 ) {
printf("del this file ok !n");
i++;
}

[ 本帖最后由 snow888 于 2005-11-22 17:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP