- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我希望创建一个优先级列表,其中包含来自 Unix 环境中的 fork 进程的 PID。我找到了以下代码部分,但我不明白 rand 和 srand(getpid()) 正在完成什么。如何使用随机数创建“优先级列表”?
我知道 rand() % (100 - 1) +1;
给了你一个随机数,但为什么代码的作者在减去它之后还要加 1?
for(B = 0; B < noToCreate; B++)
{
pid = fork();
if(pid == -1)
{
perror("Error forking");
exit(1);
}
else if(pid > 0)
{
wait(0);
}
else
{
srand(getpid());
while(x == 0)
{
if(*randNum == 101)
{
*randNum = rand() % (100 - 1) + 1;
*pidNum = getpid();
printf("priority: %d Process ID: %d \n", *randNum, *pidNum);
x = 1;
}
else
{
*randNum++;
*pidNum++;
}
}
exit(0);
}
} /* Closes main for loop */
谢谢大家! :)
最佳答案
srand
函数种子 rand
使用的随机数生成器.这是为了确保您不会在每次运行程序时都得到相同的数字序列。
正常使用是使用 time
返回的当前时间,但任何“看似”随机数都可以。不,您不能使用 rand
来创建种子,因为如果没有先前的种子,程序中的第一个 rand
调用将始终返回相同的数字。
至于rand() % (100 - 1) +1
部分,就是得到一个1到100之间的随机数。先除以随机数 99 (100 - 1) 并使用 0 到 99 之间的余数,然后加 1 得到 1 到 100 之间的值。
关于c - 下面的 srand(getpid()) 和 rand() 在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17880233/
我正在尝试运行这段 hello world 代码: #include #include #include #include char string1[] = "\n Hello"; char
在 Pthreads 手册页中提到 Calls to getpid(2) return a different value in each thread 在 LinuxThreads 部分。 我创建了
我有一个应用程序,我需要编写一个新的 getpid 函数来替换原来的操作系统。实现类似于: pid_t getpid(void) { if (gi_PID != -1) {
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我四处搜索,但无法找到我要找的东西。我知道 getpid() 返回调用进程的进程 ID,getppid() 返回调用进程父进程的进程 ID。但是有没有函数可以获取程序的进程ID呢?或者这就是上述两者之
我尝试将 getpid 系统调用的结果打印到标准输出。 这是我的汇编代码: ;getpid.asm [SECTION .txt] global _start _start: xor eax,
尝试在 linux-mint 上运行 c++ prog 时出现此错误,$制作 g++ -c -O3 common.cc common.cc: In function ‘float getCurr
我读到 syscall(39) 返回当前进程 ID (pid) 那为什么这2个程序输出2个不同的数字呢? int main() { long r = syscall(39); prin
我最近开始了一门关于操作系统的类(class),我的一项作业涉及从调用系统库的代码中跟踪系统调用 getpid(),通过它在操作系统中的实现,返回到系统库和用户程序。我真的很迷茫,不知道从哪里开始。我
我是c语言和Linux新手。我有一个与 fork()、getpid() 和 exec() 函数相关的问题。我使用 fork() 调用编写了一个 C 程序,我的程序代码如下”代码: #include
这个问题很快:)。我知道 srand() 用于为随机数生成器提供种子,以防止生成相同的随机数序列。同样,我知道 getpid()“应返回调用进程的进程 ID。” ( http://pubs.openg
#include #include #include #include int main(int argc, char **argv) { printf ("%d", getpid()
当我运行下面的代码时 #include #include //int i=0; int main(){ int id ; id = fork() ; printf("id value : %d\n
我在程序中多次调用getpid()(为了测试系统调用的效率),但是当我使用strace要获取跟踪,只捕获一个 getpid() 调用。 代码很简单: #include #include #incl
我刚刚安装了 Android Studio,我从 SDK 管理器安装了推荐的包,现在我正在尝试构建一个示例应用程序。我收到此错误消息: Failed to complete Gradle execut
新来的。我正在尝试制作一个 c++ 程序,它将从 python 创建的命名管道中读取。我的问题是,python 创建的命名管道使用 os.getpid() 作为管道名称的一部分。当我尝试从 C++ 调
根据手册页 getpid() returns the process ID (PID) of the calling process. 在下面的代码中,为什么 parent pid 返回的值与 get
如果我有如下字符串: char* exampleString = "test$$"; 假设 getpid() 返回 1587。 如何用 getpid() 的结果替换字符串中的 $$,使结果成为字符串
假设您处于单线程进程中,并且相关信号未被阻塞或忽略,是否可以保证: kill(getpid(), sig); 是否会导致在执行下一行代码之前传递信号? 特别是,如果信号是一个没有处理程序的信号,并且整
/* In alarm.c, the first function, ding, simulates an alarm clock. */ #include #include #include
我是一名优秀的程序员,十分优秀!