我有一个shell脚本,其中包含以下行:
if [ $elof -eq 1 ];
then exit 3
else if [ $elof -lt 1 ];then
exit 4
else
exit 5
fi
fi
在我的C程序中,我使用popen
来执行这样的脚本:
char command[30];
char script[30];
scanf("%s", command);
strcpy(script, "./myscript.sh ");
strcat(script, command);
FILE * shell;
shell = popen(script, "r");
if(WEXITSTATUS(pclose(shell))==3) {
//code
}
else if(WEXITSTATUS(pclose(shell))==4){
//code
}
现在,如何获取脚本的退出代码?我尝试使用WEXITSTATUS
,但它不起作用:
WEXITSTATUS(pclose(shell))
答案 0 :(得分:3)
After you have closed a stream, you cannot perform any additional operations on it.
在文件对象上调用write
后,您不应该致电pclose
或pclose
甚至pclose
!
FILE *
表示您已完成0
,它将释放所有基础数据结构(proof)。
第二次调用它可以产生任何效果,包括...
int r = pclose(shell);
if(WEXITSTATUS(r)==3)
{
printf("AAA\n");
}
else if(WEXITSTATUS(r)==4)
{
printf("BBB\n");
} else {
printf("Unexpected exit status %d\n", WEXITSTATUS(r));
}
...
。
您的代码应如下所示:
localhost