我想使用fork> exec过程创建许多子进程.许多过程都以非常快的速度结束(不到两分钟,有些甚至更早).
我的第一个问题是,我将生成的进程放入后台
./spawnbot > logging.txt
[CTRL+Z]
bg 1
disown
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我不再看到任何spawnbot的消息,他们直接进入logging.txt.然而,每当创建一个新的孩子时,我再次在我的控制台中看到关于那个孩子的所有信息..我现在想要用它自己的管道启动每个孩子 - 是否有更好的方法让孩子们在他们的输出消息全部发布安慰?我应该将它重定向到/ dev/null还是用C中的一些标志完成?
其次,所有的孩子都没有真正被杀.我的ps -ef中有很多进程.我该怎么办?我该怎么做
如果我使用绝对路径,我无法将整个目录移动到新位置.如果我使用相对路径,我无法将单个文件移动到新位置.
这里有什么解决方案?你是否设置了一个包含根路径的配置文件并从那里开始?或者你有一个规则:永远不要移动文件?
我在一些项目中看到人们使用dirname(FILE).有意义的是,我的意思是,为什么不简单地将它留下来,因为dirname无论如何都是相对的(取决于文件所在的位置)?
我正在尝试对表中的值使用ADDDATE函数.
UPDATE credit SET addOns=ADDDATE(addOns, INTERVAL 30)
Run Code Online (Sandbox Code Playgroud)
addOns是我存储日期时间的地方.为什么我不能添加30天?
我也试过了
UPDATE credit SET addOns=ADDDATE(SELECT addOns FROM credit, INTERVAL 30)
Run Code Online (Sandbox Code Playgroud) 在C中,如果我的应用程序意外结束,我可以在此之前调用函数吗?我正在向数据库(processRunning = 1)写入一个标志,以阻止其他应用程序启动类似的进程.当应用程序结束时,它不会改变该标志.
在MySQL中,我将DECIMAL字段设置为10,10.但是,每当我输入一个新值时,它会显示0.9999999999.我需要更改以接受逗号后的任何数字,精度为10位数?由于某种原因,它确实与10,6一起使用.
PS:我想插入汇率.
出于好奇:有没有办法在C项目中使用C++文件?对于文件,我的意思是能够从头文件和库访问函数,并在您自己的项目中使用它们来解决已经解决的问题.
我有一个无序的HTML列表,并使用CSS来设置所有内容.当文本有多行时,它在项目符号点之前开始.有没有办法让它在子弹点位置后开始?

我有一个返回字符串的函数:
const *char getMyPassword()
{
return "mysecretpassword";
}
Run Code Online (Sandbox Code Playgroud)
好吧,它工作得很好,但我发现,如果我在Unix系统上运行"字符串",它会显示在列表中..不好.
替换它的最简单方法是什么?该函数位于库中,我希望保持灵活性.我现在开始在函数内进行mallocing,字符串中的字符串消失了.但是,我什么时候可以再次释放它?
char * getMyPassword()
{
unsigned char arr[] = { 'p', 'a', 's', 's', 'w', 'o', 'r' , 'd', '\0' };
char *return_arr = malloc(sizeof(arr));
strcpy(return_arr, arr);
return return_arr;
}
Run Code Online (Sandbox Code Playgroud)
如果我以前是malloc并传递一个指针,那么我怎么能知道这个大小,因为密码大小只在函数中知道?
作为一个计划BI可以通过一个巨大的阵列,但这似乎不是很优雅.我该怎么做呢?
编辑:我添加了strcpy(return_arr,arr).我实际上在原始代码中有它,但在这里忘了它.
下面的函数采用argv [0]参数,该参数包含应用程序的调用路径,并替换最后一位,直到它使用我想要生成的新应用程序的名称命名为"/",该应用程序位于同一文件夹中.
BTW:我正在声明一个全局argv变量,因此该函数可以访问它,因为我不想在每个函数调用中传递信息.
当我编译我的代码时,一切似乎都有效,但我收到了上述警告.
我知道我正在声明变量,并且只要函数返回它就会被销毁.
作为初学C程序员,我想知道解决这个问题的最优雅/最简单的方法是什么?
我应该将指针传递给函数或malloc一些内存吗?
char *returnFullPath()
{
char pathToApp[strlen(argv[0])+1];
strcpy(pathToApp, argv[0]);
int path_length = strlen(argv[0]);
while (pathToApp[path_length] != '/')
{
path_length--;
}
if (path_length > 2)
pathToApp[path_length+1] = '\0';
else
pathToApp[0] = '\0';
// length of getcwd + length of pathtoapp + 1 for zero plus 6 for "bidbot"
char bidbotPath[strlen(getcwd(NULL,0)) + strlen(pathToApp) + 1 + 6];
sprintf(bidbotPath, "%s/%sbidbot", getcwd(NULL,0), pathToApp);
return bidbotPath;
}
Run Code Online (Sandbox Code Playgroud) 在我的C应用程序中,我有一个解密密钥,用于解密数据库中的集合(用户名/密码).目前,我只是宣布它
char * key = "$$$secretSampleDecryptionKey$$$";
Run Code Online (Sandbox Code Playgroud)
在该行之后不久,我准备SQL语句,然后从DB中进行选择.我的问题是,如果有人要调试我编译的应用程序或解组它,他们真的会看到密钥吗?我该怎么做才能将它们隐藏起来?
编辑:
正如Mark和Aaron指出的那样,我可以简单地使用Linux/Unix字符串命令
strings nameOfApplication
Run Code Online (Sandbox Code Playgroud)
打印出我的应用程序中的所有字符串,包括"秘密"密钥.
编辑2:
该应用程序在我的服务器上运行,数据库存储加密的敏感客户数据.我以为我是安全的,因为没有文本文件中的密钥供所有人阅读,而是编译它.