linux下C编程,处理音频有关问题,感觉跟windows下C有不同,看的不明白

linux下C编程,处理音频问题,感觉跟windows下C有不同,看的不明白
有一段示例:passthrough 
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <errno.h>
#include <string.h>

#include <unistd.h>

int main(int argc, char *argv[])
{
while(1){
// Buffer containing one sample (left and right, both 16 bit).
int16_t samples[2];
unsigned cbBuffer=sizeof(samples); // size in bytes of 

// Read one sample from input
int got=read(STDIN_FILENO, samples, cbBuffer);
if(got<0){
fprintf(stderr, "%s : Read from stdin failed, error=%s.", argv[0], strerror(errno));
exit(1);
}else if(got==0){
break;  // end of file
}else if(got!=cbBuffer){
fprintf(stderr, "%s : Did not receive expected number of bytes.\n", argv[0]);
exit(1);
}

// Copy one sample to output
int done=write(STDOUT_FILENO, samples, cbBuffer);
if(done<0){
fprintf(stderr, "%s : Write to stdout failed, error=%s.", argv[0], strerror(errno));
exit(1);
}else if(done!=cbBuffer){
fprintf(stderr, "%s : Could not read requested number of bytes from stream.\n", argv[0]);
}
}

return 0;
}

调用形式如下:
./mp3_file_src.sh song.mp3 | ./passthrough > /dev/null

这里的passthrough 做了什么事?
然后有两个小问题要做:
1.如果我想自己产生一个信号,正弦的,要怎么办?
这个函数是:signal_generator,调用形似如下:
./signal_generator 1000 > ../tmp/sine1000.raw
linux下C编程,处理音频有关问题,感觉跟windows下C有不同,看的不明白
2.怎么输入两段音频,然后求和,输出来?还调用signal_generator 这个函数来产生输入音频
调用形式如下:
./signal_generator 1000 > ../tmp/sine1000.raw
./signal_generator 2000 > ../tmp/sine2000.raw
./merge ../tmp/sine1000.raw ../tmp/sine2000.raw | ./audio_sink.sh
------解决方案--------------------
锅锅确定地址正确嘛。