gpt4 book ai didi

c - 用于修改正在运行的 C 程序的行为的脚本

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:38 25 4
gpt4 key购买 nike

我有这样一种情况,我提交的作业已经运行了五天,但由于引入了一个错误,所有的工作都可能丢失。我做了一个“系统”调用来压缩数据文件,然后删除可能有 4G 大小的原始未压缩文件。所以我在 C 代码中有这个

    strcpy(command,"data"); ////I should added a forward slash here "data/"
sprintf(command,"%scompress -c -i %s -o %s",command,name,out_name);
system(command);
remove(name); /////This is the problem

错误在 sprintf 行中,我想在该行中调用 data/compress 中的程序,但由于缺少“/”,系统命令失败。因此,生成的数据没有被压缩,然后原始文件立即被删除,让我一无所有!如果它被压缩就没问题了。

目前有五个正在运行的作业处于这种状态。我需要以某种方式转移这种行为,这样我就不会失去五天的工作。我正在考虑在当前目录中创建一个名为“datacompress”的假脚本来更改正在运行的程序的行为。我可以这样做还是有更好的选择(如果有的话)?

最佳答案

您可以使datacompress 成为data/compress 的符号链接(symbolic link)。糟糕,除非进程的 $PATH 包含 ..

,否则这将不起作用

另一种选择:删除用户对包含name 的目录的写权限。这将导致 remove() 函数失败。

如果您的系统有访问控制列表,请移除进程对未压缩文件的删除权限。

当你试图想出一个解决方案时,你可以暂停这个过程:

kill -STOP <pid>

关于c - 用于修改正在运行的 C 程序的行为的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19337644/

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