所以我有这个功能,分叉N个子进程.然而,似乎分叉超过指定.你能告诉我我做错了什么吗?谢谢
void forkChildren(int nChildren){
int i;
for(i = 1; i <= nChildren; i++){
pid = fork();
if(pid == 0)
printf("I'm a child: %d PID: %d\n",i, getpid());
}
}
Run Code Online (Sandbox Code Playgroud)
在主要我打电话:
forkChildren(5);
Run Code Online (Sandbox Code Playgroud)
我期待以下输出:
I'm a child: 1 PID: 2990
I'm a child: 2 PID: 2991
I'm a child: 3 PID: 2992
I'm a child: 4 PID: 2993
I'm a child: 5 PID: 2994
Run Code Online (Sandbox Code Playgroud)
但相反,我得到以下内容:
I'm a child: 1 PID: 2990
I'm a child: 2 PID: 2991
I'm a child: 3 PID: 2992 …
Run Code Online (Sandbox Code Playgroud) 因此,如果我理解得很好,垃圾收集会自动释放程序不再使用的对象.像java中的垃圾收集器.
我听说像C这样的语言不支持垃圾收集,程序可能会有内存泄漏并随后耗尽内存.
那么程序员在不支持垃圾收集的C语言中所犯的错误是什么?我猜不会在它们不再使用后解除分配对象.但是由于缺少垃圾收集器,这些是我们可以做的唯一错误吗?
我正在研究这个程序,我注意到使用%f表示double,%d表示float,这给了我一些完全不同的东西.谁知道为什么会这样?
int main ()
{
float a = 1F;
double b = 1;
printf("float =%d\ndouble= %f", a, b);
}
Run Code Online (Sandbox Code Playgroud)
这是输出
float = -1610612736
double = 190359837192766135921612671364749893774625551025007120912096639276776057269784974988808792093423962875123204096.0000
Run Code Online (Sandbox Code Playgroud) 我试图将一个字符串分成29个令牌..... stringtokenizer不会返回null令牌.我试过string.split,但我相信我做错了什么:
String [] strings = line.split(",", 29);
Run Code Online (Sandbox Code Playgroud)
样本输入:
10150,15:58,23:58,16:00,00:00,15:55,23:55,15:58,00:01,16:03,23:58,,,,,16:00,23:22,15:54,00:03,15:59,23:56,16:05,23:59,15:55,00:01,,,,
10155,,,,,,,,,,,07:30,13:27,07:25,13:45,,,,,,,,,,,07:13,14:37,08:01,15:23
10160,10:00,16:02,09:55,16:03,10:06,15:58,09:48,16:07,09:55,16:00,,,,,09:49,15:38,10:02,16:04,10:00,16:00,09:58,16:01,09:57,15:58,,,,
Run Code Online (Sandbox Code Playgroud) 我有一个二维数组,我需要顺时针旋转90度,但我不断得到arrayindexoutofbounds ...
public int[][] rorateArray(int[][] arr){
//first change the dimensions vertical length for horizontal length
//and viceversa
int[][] newArray = new int[arr[0].length][arr.length];
//invert values 90 degrees clockwise by starting from button of
//array to top and from left to right
int ii = 0;
int jj = 0;
for(int i=0; i<arr[0].length; i++){
for(int j=arr.length-1; j>=0; j--){
newArray[ii][jj] = arr[i][j];
jj++;
}
ii++;
}
return newArray;
}
Run Code Online (Sandbox Code Playgroud) 我试图比较Smalltalk中的两个字符串,但我似乎做错了什么.
我一直收到这个错误:
未处理的异常:非布尔接收器.继续求真.
stringOne := 'hello'.
stringTwo := 'hello'.
myNumber := 10.
[stringOne = stringTwo ] ifTrue:[
myNumber := 20].
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
如果我使用c89 vs c99编译以下程序有区别吗?我得到相同的输出.两者之间真的有区别吗?
#include <stdio.h>
int main ()
{
// Print string to screen.
printf ("Hello World\n");
}
gcc -o helloworld -std=c99 helloworld.c
vs
gcc -o helloworld -std=c89 helloworld.c
Run Code Online (Sandbox Code Playgroud) 我正在以两种方式对我的汽车阵列进行排序.一年一年,如下所示.和另一个由make.Make是一个char*如果我只是指向它们,我如何比较字符串?
int i, j;
for(i=0; i<100; i++){
for(j=0; j<100-i; j++){
if(carArray[i]!=NULL && carArray[j]!= NULL && carArray[j+1]!=NULL){
if(carArray[i]->year > carArray[j+1]->year){
swap(carArray[j], carArray[j+1]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
上述方法适用于int(年).如何使它适用于char指针?
我有以下两个结构,其中"child struct"有一个"rusage struct"作为元素.
然后我创建两个类型为"child"的结构,让我们称它们为childA和childB
如何将childA的rusage结构复制到childB?
typedef struct{
int numb;
char *name;
pid_t pid;
long userT;
long systemT;
struct rusage usage;
}child;
typedef struct{
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
long ru_maxrss; /* maximum resident set size */
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
long ru_minflt; /* page reclaims */
long ru_majflt; /* …
Run Code Online (Sandbox Code Playgroud)