1. 通过C执行shell指令,比如,在代码中查找进程名称,并进行终止
2.单实例线程操作
1. 要点
snprintf
函数被用于构建一个包含多个命令的字符串
在C语言中,system
函数用于执行shell命令
在C或C++编程中,::mkdir
函数用于创建一个新的目录
该例子中,编译生成的进程名称为motion_realmachine
void system_kill_last() {// GDB 调试时,不用杀掉,否则会退出GDBchar* pathVar = getenv("_");if (pathVar != NULL) {if (0 == strcmp(pathVar, "/usr/bin/gdb")) {printf("# GDB _=[%s]\n", pathVar);return;}}// 清理残余线程char kill_command[256] = {0x00};snprintf(kill_command, sizeof(kill_command),"sudo true ; ps -aux | grep motion_realmachine | grep -v grep | grep -v %d | ""awk '{print $2}' | xargs -r sudo kill -9",gettid());// std::cout << "kill_command: " << kill_command << std::endl;int ret = system(kill_command);if (0 == ret) {sleep(1);}
}int main(int argc, char *argv[]) {system_kill_last();return 0;
}
ret = ::mkdir("/tmp/er", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
ret
是一个变量,用于存储mkdir
函数的返回值。如果目录成功创建,mkdir
通常返回0;如果失败,则返回-1,并设置errno
以指示错误类型。"/tmp/er"
是你想要创建的目录的路径。S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH
是权限设置,这些宏在<sys/stat.h>
中定义。具体来说:S_IRWXU
代表用户(文件所有者)具有读、写和执行权限。S_IRWXG
代表组具有读、写和执行权限。S_IROTH
代表其他用户具有读权限。S_IXOTH
代表其他用户具有执行权限。- 通过将这些宏使用位或运算符(
|
)组合,你为新目录设置了非常宽松的权限:所有者、组成员和其他用户都可以读、写和执行该目录(尽管S_IROTH
和S_IXOTH
在这里可能有些多余,因为通常不会给其他用户写权限)。
2. 链接如下:
c++线程测试例程_ubuntu c++ sleep-CSDN博客