2010年6月23日 星期三
C alarm() - 系統經過特定時間之後發sigalarm給程式
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/apis/sigalarm.htm
程式在做一些timeout的功能時用alarm()很方便!
標籤:
C programming,
linux
syslog - 寫入資訊至系統的log
參考http://blog.csdn.net/yulanarti/archive/2007/09/13/1783839.aspx
#include
void openlog (char*ident,int option ,int facility);
void syslog(int priority,char*format,……)
void closelog();
#include
void openlog (char*ident,int option ,int facility);
void syslog(int priority,char*format,……)
void closelog();
標籤:
C programming,
linux
2010年6月22日 星期二
在程式內執行系統指令並取得回結果
使用popen()
參考http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/FUNCTIONS/popen.html
FILE *popen(const char *command, const char *type);
執行某指令並把stdout的值放入檔案並回傳
若要取得stderr可以在指令後加上 "2>&1"
用完後要使用pclose()關閉檔案
example:
參考http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/FUNCTIONS/popen.html
FILE *popen(const char *command, const char *type);
執行某指令並把stdout的值放入檔案並回傳
若要取得stderr可以在指令後加上 "2>&1"
用完後要使用pclose()關閉檔案
example:
/*
* Purpose: Program to demonstrate the popen function.
*
* to do: Check that the 'popen' was successfull.
*
* Author: M J Leslie.
* Date: 08-Jan-94
*/
#include
main()
{
FILE *fp;
char line[130]; /* line of data from unix command*/
fp = popen("ls -l", "r"); /* Issue the command. */
/* Read a line */
while ( fgets( line, sizeof line, fp))
{
printf("%s", line);
}
pclose(fp);
}
標籤:
C programming,
linux
2010年6月14日 星期一
ganttproject - 畫甘特圖的軟體
http://www.ganttproject.biz/
蠻簡單的甘特圖軟體,使用java寫的,檔案使用xml格式儲存
不過發現下載回來的版本中文字型顯示有問題,全部變半形
但是線上版本運作就正常,所以就直接抓線上運作的版本,在本地執行
蠻簡單的甘特圖軟體,使用java寫的,檔案使用xml格式儲存
不過發現下載回來的版本中文字型顯示有問題,全部變半形
但是線上版本運作就正常,所以就直接抓線上運作的版本,在本地執行
/usr/lib/jvm/java-6-sun-1.6.0.20/bin/javaws -offline /home/xxxx/ganttproject-2.0.10.jnlp
2010年6月4日 星期五
使用蜂鳴器通知某指令完成
1.先寫一隻能夠使蜂鳴器發出聲音的程式
2.beep:一個shell script使b2在指令完成時執行
3.把b2 and beep放至/bin
4.由於b2發出聲音要有root的權限,所以b2擁有者要設為root,然後對beep作setuid
http://www.google.com/url?q=http%3A%2F%2Flinux.vbird.org%2Flinux_basic%2F0220filemanager.php%23suid&sa=D&sntz=1&usg=AFrqEzfx6HcqK_4BpogqAlU2s7Ts5ttsug
//b2.c
#include
#include
void play(unsigned int* freq, unsigned int* delay);
int main(int argc, char* argv[])
{
speaker(330, 5);
speaker( 0, 5);
speaker(330, 5);
return 0;
}
int speaker(unsigned int freq,unsigned int delay)
{ static int flag=0,bit;
if(flag==0)
{
flag=1;
iopl(3);
}
outb(0xb6,0x43);
outb((freq & 0xff),0x42);
outb((freq >> 8),0x42);
bit=inb(0x61);
outb(3 | bit,0x61);
usleep(10000*delay);
outb(0xfc | bit,0x61);
return;
}
2.beep:一個shell script使b2在指令完成時執行
$*
sudo ./b2
3.把b2 and beep放至/bin
4.由於b2發出聲音要有root的權限,所以b2擁有者要設為root,然後對beep作setuid
http://www.google.com/url?q=http%3A%2F%2Flinux.vbird.org%2Flinux_basic%2F0220filemanager.php%23suid&sa=D&sntz=1&usg=AFrqEzfx6HcqK_4BpogqAlU2s7Ts5ttsug
標籤:
C programming,
linux
2010年6月3日 星期四
在linux 下使用rdesktop連線windows 遠端桌面
在ubuntu中可以使用內建的圖形化介面:tsclient
不過他預設的解析度只有固定幾個,無法改變
(就直接修改tsclient存下來的設定檔,也只會跳到最接近的選項)
所以可以使用rdesktop指令:
不過他預設的解析度只有固定幾個,無法改變
(就直接修改tsclient存下來的設定檔,也只會跳到最接近的選項)
所以可以使用rdesktop指令:
rdesktop -u cyl -p passwd -g 1280x1000 -a 24 192.168.0.XXX -x nr
rdesktop: A Remote Desktop Protocol client.
Version 1.6.0. Copyright (C) 1999-2008 Matthew Chapman.
See http://www.rdesktop.org/ for more information.
Usage: rdesktop [options] server[:port]
-u: user name
-d: domain
-s: shell
-c: working directory
-p: password (- to prompt)
-n: client hostname
-k: keyboard layout on server (en-us, de, sv, etc.)
-g: desktop geometry (WxH)
-f: full-screen mode
-b: force bitmap updates
-L: local codepage
-A: enable SeamlessRDP mode
-B: use BackingStore of X-server (if available)
-e: disable encryption (French TS)
-E: disable encryption from client to server
-m: do not send motion events
-C: use private colour map
-D: hide window manager decorations
-K: keep window manager key bindings
-S: caption button size (single application mode)
-T: window title
-N: enable numlock syncronization
-X: embed into another window with a given id.
-a: connection colour depth
-z: enable rdp compression
-x: RDP5 experience (m[odem 28.8], b[roadband], l[an] or hex nr.)
-P: use persistent bitmap caching
-r: enable specified device redirection (this flag can be repeated)
'-r comport:COM1=/dev/ttyS0': enable serial redirection of /dev/ttyS0 to COM1
or COM1=/dev/ttyS0,COM2=/dev/ttyS1
'-r disk:floppy=/mnt/floppy': enable redirection of /mnt/floppy to 'floppy' share
or 'floppy=/mnt/floppy,cdrom=/mnt/cdrom'
'-r clientname=': Set the client name displayed
for redirected disks
'-r lptport:LPT1=/dev/lp0': enable parallel redirection of /dev/lp0 to LPT1
or LPT1=/dev/lp0,LPT2=/dev/lp1
'-r printer:mydeskjet': enable printer redirection
or mydeskjet="HP LaserJet IIIP" to enter server driver as well
'-r sound:[local[:driver[:device]]|off|remote]': enable sound redirection
remote would leave sound on server
available drivers for 'local':
alsa: ALSA output driver, default device: default
oss: OSS output driver, default device: /dev/dsp or $AUDIODEV
'-r clipboard:[off|PRIMARYCLIPBOARD|CLIPBOARD]': enable clipboard
redirection.
'PRIMARYCLIPBOARD' looks at both PRIMARY and CLIPBOARD
when sending data to server.
'CLIPBOARD' looks at only CLIPBOARD.
-0: attach to console
-4: use RDP version 4
-5: use RDP version 5 (default)
-y: use raw keyboard (default no)
2010年6月2日 星期三
簡易連線uart的程式
本來是想要把minicom搬到android上,不過他的source code很多,也蠻複雜的,
後來在網路上找到tick_minicom,只有幾個檔案,應該很容易讓他編進android
tick_minicom:簡單的uart程式
http://linuxocarina.blogspot.com/2007/09/minicom.html
不過我的連線設定跟他不一樣,所以參考以下網站對程式做了一些修改之後就可以使用了
http://book.51cto.com/art/200711/59758.htm
後來在網路上找到tick_minicom,只有幾個檔案,應該很容易讓他編進android
tick_minicom:簡單的uart程式
http://linuxocarina.blogspot.com/2007/09/minicom.html
不過我的連線設定跟他不一樣,所以參考以下網站對程式做了一些修改之後就可以使用了
http://book.51cto.com/art/200711/59758.htm
int
set_baud (int fd, int rate)
{
int i, rt;
u_int32_t bd = 0;
struct termios ti;
//select baudrate
for (i = 0; i < ARRAY_SIZE (bdrts); i++) {
if (bdrts[i].bps == rate) {
bd = bdrts[i].b;
debug("select baudrate: %d\n",rate);
break;
}
}
if (bd == 0) {
error ("Cannot set Baud Rate!!\n");
return -1;
}
//set baudrate
rt = tcgetattr (fd, &ti);
if (rt < 0) {
error ("Cannot get attr i=%d\n", rt);
return rt;
}
debug ("Open uart input with speed %d\n", bdrts[i].bps);
//rt = cfsetispeed (&ti, B0);
rt = cfsetispeed (&ti, bd);
if (rt < 0) {
//error ("Cannot set input baud to B0!!\n");
error ("Cannot set input baud to bd!!\n");
return rt;
}
debug ("Open uart output with speed %d\n", bdrts[i].bps);
rt = cfsetospeed (&ti, bd);
if (rt < 0) {
error ("Cannot set baud rate %d\n", bdrts[i].bps);
return rt;
}
rt=tcsetattr (fd, 0, &ti);
if(rt<0){
return rt;
}
//set no hareware conrtol
rt = tcgetattr (fd, &ti);
//ti.c_cflag |= CRTSCTS; // hardware control
ti.c_cflag &= ~CRTSCTS; // no hardware control
rt=tcsetattr (fd, 0, &ti);
if(rt<0){
return rt;
}
//set databit:8
rt = tcgetattr (fd, &ti);
ti.c_cflag&=~CSIZE;
ti.c_cflag |=CS8;
rt=tcsetattr (fd, 0, &ti);
if(rt<0){
return rt;
}
//set no parity bit
rt = tcgetattr (fd, &ti);
ti.c_cflag &= ~PARENB;
rt=tcsetattr (fd, 0, &ti);
if(rt<0){
return rt;
}
return rt;
}
標籤:
android,
C programming,
linux
訂閱:
文章 (Atom)