gpt4 book ai didi

c - 将 pthread id 作为输入

转载 作者:行者123 更新时间:2023-11-30 17:39:09 24 4
gpt4 key购买 nike

我们可以将 pthread 的线程 id 作为用户的输入吗?这是正确的方法吗?

  int main(int argc, pthread_t id, char *argv[])

或者将输入放入 void 指针中,然后将其转换为 long unsigned int?这些都没有给出正确的答案。我们有办法做到这一点吗?

最佳答案

没有。 C 标准为 main 指定了两个签名:

int main(void);
int main(int argc, char *argv[]);

阅读此内容了解更多信息 - What are the valid signatures for C's main() function? 。您可以将 pthread 的 id 作为命令行参数传递给 main,然后在 argv 中读取它。 argv 接收可执行文件名称作为第一个参数(./program_name 如下),然后接收提供的其他参数。所有参数(以空格分隔)都转换为字符串文字。执行你的程序

./program_name 123454 

main内,你会这样做:

// in main

if(argc > 1) {
pthread_t id = strtol(argv[1], NULL, 10) // converts string to decimal int
if(id == 0) {
// either no integer was entered in base 10, or 0 was entered
// handle it
}
// do stuff with id
}

请注意,POSIX 不要求 pthred_t 为整数类型。它甚至可以被定义为一个结构。您需要查看 sys/types.h 头文件并了解 pthread_t 是如何实现的。然后您可以根据您认为合适的方式打印或处理它。

包含strtol库函数原型(prototype)的头文件stdlib.h。顾名思义,它将字符串转换为给定基数的 long int 类型。有关 strtol 的更多信息,请阅读此内容 - man strtol .

关于c - 将 pthread id 作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21933945/

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