プロセスをフォークし、wc
を使用してコマンドを実行していexecl
ます。正しい引数の下では正常に動作しますが、間違ったファイル名を指定すると失敗しますが、どちらの場合も戻り値
WEXITSTATUS(status)
は常に 0 です。
私がしていることには何か問題があると思いますが、何が悪いのかわかりません。man ページと Google を読むと、ステータス コードに従って正しい値を取得する必要があることが示唆されています。
これが私のコードです:
#include <iostream>
#include <unistd.h>
int main(int argc, const char * argv[])
{
pid_t pid = fork();
if(pid <0){
printf("error condition");
} else if(pid == 0) {
printf("child process");
execl("/usr/bin/wc", "wc", "-l", "/Users/gabbi/learning/test/xyz.st",NULL);
printf("this happened");
} else {
int status;
wait(&status);
if( WIFEXITED( status ) ) {
std::cout << "Child terminated normally" << std::endl;
printf("exit status is %d",WEXITSTATUS(status));
return 0;
} else {
}
}
}