对于作业,我正在创建一个时间感知的shell.如果shell运行超过一定的时间,它会分叉并执行命令并将其杀死.例如.
input# /bin/ls
a.out code.c
input# /bin/cat
Error - Expired After 10 Seconds.
input#
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:如果在程序处理过程中出现错误,也就是说,当exevce返回-1时,有没有办法阻止警报启动?
由于儿童过程分开进行,经过数小时的实验和研究后,我还没有找到任何讨论甚至暗示这类任务的内容,我觉得这可能是不可能的.如果确实不可能,我怎么能防止发生以下事情......
input# /bin/fgdsfgs
Error executing program
input# Error - Expired After 10 Seconds.
Run Code Online (Sandbox Code Playgroud)
对于上下文,这里是我正在使用的代码,我自己尝试删除这些代码.我在这里先向您的帮助表示感谢!
while(1){
write(1, prompt, sizeof(prompt)); //Prompt user
byteCount = read(0, cmd, 1024); //Retrieve command from user, and count bytes
cmd[byteCount-1] = '\0'; //Prepare command for execution
//Create Thread
child = fork();
if(child == -1){
write(2, error_fork, sizeof(error_fork));
}
if(child == 0){ //Working in child
if(-1 == execve(cmd,arg,env)){ //Execute program or error
write(2, …Run Code Online (Sandbox Code Playgroud) 我正在教自己Python并遇到一个奇怪的问题.我要做的是将一个列表传递给一个函数,并让函数返回一个列表,其中元素是它周围数字的总和,但我认为会产生一些奇怪的结果,所以我做了一个调试版本的仍然表现出行为的代码如下:
当我创建一个整数数组,并将其传递给一个函数,然后使用for循环打印列表的各个值时,每个int中第一个数字后面的数字将被截断.
例如,以下输入和输出:
Please enter a number: 101
Please enter a number: 202
Please enter a number: 303
Please enter a number: .
1
2
3
Run Code Online (Sandbox Code Playgroud)
无论输入是否为10,101或13453,都会发生这种情况 - 发生相同的行为.
我知道我可能错过了一些简单的东西,但是为了我,没有任何谷歌搜索让我解决了这个问题.下面是我用来执行此操作的代码.有趣的是:当在任何点打印for循环之外的整个列表时,它返回完整且正确的列表(即['101','202','303'])
谢谢!
temp = list()
def sum(list):
print list
for i in range(1, len(list)+1):
print i
return temp
L = list()
while True:
input = raw_input("Please enter a number: ");
if input.strip() == ".":
break
L.append(input);
print L
L2 = sum(L)
print L2
Run Code Online (Sandbox Code Playgroud)