linux c 实例,如何在linux系统编写c

老铁们,大家好,相信还有很多朋友对于linux c 实例和如何在linux系统编写c的相关问题不太懂,没关系,今天就由我来为大家分享分享linux c 实例以及如何在linux系统编写c的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

linux cut -c是什么意思

cut是一个选取命令,以行为单位,从每一行中截取出需要的部分。

(1)语法格式:

cut [-bn] [file]或 cut [-c] [file]或 cut [-df] [file]

(2)主要参数

-b:以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了-n标志。

-c:以字符为单位进行分割。

-d:自定义分隔符,默认为制表符。

-f:与-d一起使用,指定显示哪个区域。

-n:取消分割多字节字符。仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的范围之内,该字符将被写出;否则,该字符将被排除。

(3)用法示例

输出/etc/passwd文件每一行的前4个字符

$ sudo cut-c 1-4/etc/passwd

c语言实例,linux线程同步的信号量方式 谢谢

这么高的悬赏,实例放后面。信号量(sem),如同进程一样,线程也可以通过信号量来实现通信,虽然是轻量级的。信号量函数的名字都以"sem_"打头。线程使用的基本信号量函数有四个。

信号量初始化。

intsem_init(sem_t*sem,intpshared,unsignedintvalue);

这是对由sem指定的信号量进行初始化,设置好它的共享选项(linux只支持为0,即表示它是当前进程的局部信号量),然后给它一个初始值VALUE。

等待信号量。给信号量减1,然后等待直到信号量的值大于0。

intsem_wait(sem_t*sem);

释放信号量。信号量值加1。并通知其他等待线程。

intsem_post(sem_t*sem);

销毁信号量。我们用完信号量后都它进行清理。归还占有的一切资源。

intsem_destroy(sem_t*sem);

#include<stdlib.h>

#include<stdio.h>

#include<unistd.h>

#include<pthread.h>

#include<semaphore.h>

#include<errno.h>

#definereturn_if_fail(p)if((p)==0){printf("[%s]:funcerror!/n",__func__);return;}

typedefstruct_PrivInfo

{

sem_ts1;

sem_ts2;

time_tend_time;

}PrivInfo;

staticvoidinfo_init(PrivInfo*thiz);

staticvoidinfo_destroy(PrivInfo*thiz);

staticvoid*pthread_func_1(PrivInfo*thiz);

staticvoid*pthread_func_2(PrivInfo*thiz);

intmain(intargc,char**argv)

{

pthread_tpt_1=0;

pthread_tpt_2=0;

intret=0;

PrivInfo*thiz=NULL;

thiz=(PrivInfo*)malloc(sizeof(PrivInfo));

if(thiz==NULL)

{

printf("[%s]:Failedtomallocpriv./n");

return-1;

}

info_init(thiz);

ret=pthread_create(&pt_1,NULL,(void*)pthread_func_1,thiz);

if(ret!=0)

{

perror("pthread_1_create:");

}

ret=pthread_create(&pt_2,NULL,(void*)pthread_func_2,thiz);

if(ret!=0)

{

perror("pthread_2_create:");

}

pthread_join(pt_1,NULL);

pthread_join(pt_2,NULL);

info_destroy(thiz);

return0;

}

staticvoidinfo_init(PrivInfo*thiz)

{

return_if_fail(thiz!=NULL);

thiz->end_time=time(NULL)+10;

sem_init(&thiz->s1,0,1);

sem_init(&thiz->s2,0,0);

return;

}

staticvoidinfo_destroy(PrivInfo*thiz)

{

return_if_fail(thiz!=NULL);

sem_destroy(&thiz->s1);

sem_destroy(&thiz->s2);

free(thiz);

thiz=NULL;

return;

}

staticvoid*pthread_func_1(PrivInfo*thiz)

{

return_if_fail(thiz!=NULL);

while(time(NULL)<thiz->end_time)

{

sem_wait(&thiz->s2);

printf("pthread1:pthread1getthelock./n");

sem_post(&thiz->s1);

printf("pthread1:pthread1unlock/n");

sleep(1);

}

return;

}

staticvoid*pthread_func_2(PrivInfo*thiz)

{

return_if_fail(thiz!=NULL);

while(time(NULL)<thiz->end_time)

{

sem_wait(&thiz->s1);

printf("pthread2:pthread2gettheunlock./n");

sem_post(&thiz->s2);

printf("pthread2:pthread2unlock./n");

sleep(1);

}

return;

}

Linux里面uniq -c命令作用是什么

uniq [选项]文件

说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“-”表示,则从标准输入读取。

该命令各选项含义如下:、

– c显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。

– d只显示重复行。

– u只显示文件中不重复的各行。

– n前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

+n前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

– f n与- n相同,这里n是字段数。

– s n与+n相同,这里n是字符数。

接下来通过实践实例说明:

复制代码代码如下:

[root@stu100~]# cat test

boy took bat home

boy took bat home

girl took bat home

boy took bat home

boy took bat home

dog brought hat home

dog brought hat home

dog brought hat home

看test文件的内容

复制代码代码如下:

[root@stu100~]# uniq test

boy took bat home

girl took bat home

boy took bat home

dog brought hat home

uniq命令不加任何参数,仅显示连续重复的行一次

复制代码代码如下:

[root@stu100~]# uniq-c test

2 boy took bat home

1 girl took bat home

2 boy took bat home

3 dog brought hat home

1

-c参数显示文件中每行连续出现的次数。

复制代码代码如下:

[root@stu100~]# cat test|sort| uniq-c

1

4 boy took bat home

3 dog brought hat home

1 girl took bat home

排序后再显示

复制代码代码如下:

[root@stu100~]# uniq-d test

boy took bat home

boy took bat home

dog brought hat home

-d选项仅显示文件中连续重复出现的行。

复制代码代码如下:

[root@stu100~]# uniq-u test

girl took bat home

-u选项显示文件中没有连续出现的行。

复制代码代码如下:

[root@stu100~]# uniq-f 2-s 2 test

boy took bat home

忽略每行的前2个字段,忽略第二个空白字符和第三个字段的首字符,结果at home

复制代码代码如下:

[root@stu100~]# uniq-f 1 test

boy took bat home

dog brought hat home

忽略每行的第一个字段,这样boy,girl开头的行看起来是连续重复的行。

复制代码代码如下:

[root@stu100~]# uniq-D test

boy took bat home

boy took bat home

boy took bat home

boy took bat home

dog brought hat home

dog brought hat home

dog brought hat home

显示所有重复的行,每个重复的行都显示

当你有一个包含相同条目的雇员(employee)的文件,你可以以如下方式来删除相同的条目

复制代码代码如下:

$ sort namesd.txt| uniq

$ sort–u namesd.txt

如果你想知道有多少行是相同的,可以像下面这个做。以下例子中的第一列显示该行的重复数量。在本例中,以Alex和Emma开头的行,在文件中有两个重复行。

复制代码代码如下:

$ sort namesd.txt| uniq–c

2 Alex Jason:200:Sales

2 Emma Thomas:100:Marketing

1 Madison Randy:300:Product Development

1 Nisha Singh:500:Sales

1 Sanjay Gupta:400:Support

3.以下命令仅仅列出了相同的条目

复制代码代码如下:

$ sort namesd.txt| uniq–cd

2 Alex Jason:200:Sales

2 Emma Thomas:100:Marketing

阅读剩余
THE END