2
我的朋友和我正在嘗試編寫一個外殼。 我的問題是,運行'貓'命令,然後用^ C退出STDIN使我的程序segfault on waitpid,所以退出我的程序...(我不想要的當然!)段錯誤的貓/ waitpid函數(execve的在C)
每個命令工作完美,我也沒有任何其他問題......我只是問及如何解決這些(大)問題。
謝謝你的幫助! 見我的代碼爲略低於執行命令:
static int cmd_executeit(char **env, t_shell *shell, char *path)
{
pid_t forked;
int ret;
ret = 0;
if ((forked = fork()) == FAILURE)
return (bi_error(shell, "I can't fork with you :("));
if (forked == SUCCESS)
{
if (execve(path, shell->cmd, env) == FAILURE)
return (bi_error(shell, "Execution of the command failed"));
}
else
{
if (waitpid(forked, &ret, 0) < 0)
return (bi_error(shell, "I can't wait for this command. Sorry."));
}
if (WIFEXITED(ret) && (WEXITSTATUS(ret) == SUCCESS))
return (SUCCESS);
return (FAILURE);
}
我得到了答案,謝謝:)。
這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – yizzlez
請使用您問題上的編輯鏈接添加其他信息。後回答按鈕應該只用於問題的完整答案。 – Miller