gpt4 book ai didi

c - 使用 C 语言编写的 Linux Shell 的 Makefile 时出错

转载 作者:行者123 更新时间:2023-11-30 19:23:43 25 4
gpt4 key购买 nike

我为用 C 编写的一个类创建了一个 Linux shell。该 shell 可以完美运行 ls、pwd、ps、top、cd 等命令。

但是,使用 MakeFile(因为这是提交过程的一部分),当您在终端中使用命令“make test”时,我收到错误 tcsetpgrp: Inappropriate ioctl for device"在我的程序的所有正确输出中。在 Makefile 中我有 test: test.txt | .project4.c test.txt 是命令,ls、pwd、ps、top、cd 用换行符而不是逗号分隔。这是什么错误以及如何消除它?

这是我的 makefile:

PAWPRINT=myname

project4:

clean:
rm -f *.o

nuke:
rm -f *.o project4 *.gz

test: project4
cat test.txt | ./project4

submit.sh:
wget -O submit.sh http://somewebsite.com/submit.sh
chmod +x submit.sh

project4.tar.gz: project4.c test.txt Makefile
mkdir -p dist
cp $^ dist
tar -cvzf $@ dist

submit: submit.sh project4.tar.gz
PAWPRINT=$(PAWPRINT) sh submit.sh project4.tar.gz

这是我的 test.txt 文件:

sleep 1000 &
jobs
pwd
ls
echo hello > a.txt
echo world > b.txt
cat a.txt b.txt > c.txt
cat c.txt

我的程序可以在 makefile 之外单独运行这些命令。我设计了程序来处理这些命令,因为这就是任务的目的。

最佳答案

所以你是说,tcsetpgrp 来自你的程序输出,这是有道理的吗?嗯,这与您的 MakeFile 有关,但是是在提交过程中运行程序的结果。您的程序试图成为一个进程组,因此试图告诉其控制终端它是前台进程。但是没有终端,因为您处于提交过程中,因此 tcsetpgrp() 会提示(man tcsetpgrp(3) 了解更多信息)。一般来说,这是无害的,但很烦人。

关于c - 使用 C 语言编写的 Linux Shell 的 Makefile 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com