我想读取客户端请求的线程数。因此,如果有人像这样运行我的程序:
./test 2
我必须读取等于 2 的线程数。我尝试getchar()
但它不起作用。任何的想法?
这是一个包含完整、正确的错误检查和诊断消息的最小示例。请注意,设置errno
为 0 是区分范围错误和有效strtoul()
输出所必需的,这是该函数的一个烦人的怪癖。
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[])
{
if (argc != 2) {
fputs("usage: test NTHREAD\n", stderr);
exit(1);
}
char *e;
errno = 0;
unsigned long nthread = strtoul(argv[1], &e, 0);
if (!*argv[1] || *e) {
fputs("error: invalid NTHREAD\n", stderr);
exit(1);
}
if (nthread == (unsigned long) -1 && errno == ERANGE) {
fputs("error: NTHREAD out of range\n", stderr);
exit(1);
}
// Your code goes here
}
这与线程本身无关。
如果给定程序的第一个参数,它将以argv[1]
字符串形式出现,因此您需要将其转换为整数,例如atoi
or strtol
。
int main(int argc, int **argv)
使用参数main
,你应该知道第一个参数argv[0]
是当前正在执行的文件的名称,后面的参数是发送给你的程序的参数。
在您的情况下,您必须阅读argv[1]
.
始终检查argc
以计算输入的参数。