Posted on 2012-12-27 15:15:04 os
OS: ubuntu 12.04 x86_64
GCC: gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <libnotify/notify.h>
void usage(char *);
int close_std();
char * const short_options = "hf:b:";
struct option long_options[] =
{
{"help", 2, NULL, 'h'},
{"file", 2, NULL, 'f'},
{"body", 2, NULL, 'b'},
{NULL, 0, NULL, 0},
};
char * player = "/usr/bin/mplayer";
char * music_file = "/usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga";
char * notify_body = "You have a new mail!";
void usage(char * program_name)
{
printf("%s -h [--help]\n"
"-f [--file=filename] path to music file.\n"
"-b [--body=content] the body of notify dialog.\n", program_name);
exit(1);
}
int close_std()
{
if(close(STDIN_FILENO) == -1 || close(STDOUT_FILENO) ==-1 || close(STDERR_FILENO) == -1)
{
return -1;
}
return 0;
}
int main(int argc, char **argv)
{
int c, pid;
char * program_name = argv[0];
while((c = getopt_long(argc, argv, short_options, long_options, NULL)) != -1)
{
switch(c)
{
case 'h':
usage(program_name);
case 'f':
music_file = optarg;
break;
case 'b':
notify_body = optarg;
break;
case '?':
usage(program_name);
default:
usage(program_name);
}
}
if((close_std() == -1))
{
perror("close_std()");
exit(1);
}
//player music
if((pid = fork()) < 0)
{
perror("fork()");
exit(1);
}
else if(pid == 0)
{
if(execlp(player, player, music_file, (char *)0) < 0)
{
perror("execlp()");
exit(1);
}
exit(0);
}
//send notify information to user
if((pid = fork()) < 0)
{
perror("fork()");
}
else if(pid == 0)
{
notify_init("Mail");
NotifyNotification * notify = notify_notification_new("Mail", notify_body, "Mail");
notify_notification_show(notify, NULL);
exit(0);
}
exit(0);
}
Makefile:
SRC_INCLUDE=-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gdk-pixbuf-2.0
CC=gcc
MOD_CFLAGS=-fPIC
CFLAGS=-g -O2 -DHAVE_CONFIG_H -DNSCORE
LDFLAGS=
LIBS=-lnotify
DBG_FLAGS= -DDEBUG=1
OUT_PROGRAM= newmail_notify
all: main
main:
$(CC) $(MOD_CFLAGS) $(CFLAGS) $(SRC_INCLUDE) -o $(OUT_PROGRAM) newmail_notify.c $(MOD_LDFLAGS) $(LDFLAGS) $(LIBS)
Wow that was strange. I just wrote an very long comment but after I clicked submit my comment didn’t show up. Grrrr… well I’m not writing all that over again. Regardless, just wanted to say excellent blog!vbetflik vip
order valaciclovir 1000mg generic purchase bactrim without prescription floxin 400mg cost
buy dipyridamole cheap buy felodipine 5mg generic pravachol us
Authors are indebted to the Indian Council of Medical Research for providing the financial grant no cialis buy
oral aspirin 75mg burton brunette online blackjack live dealer
buy cabergoline 0.5mg for sale buy dostinex 0.5mg order generic dapoxetine
buy azithromycin 500mg pills buy azithromycin pill zithromax 500mg pills
cheap prednisolone generic order prednisolone pill cost prednisolone
order triamcinolone 10mg sale brand triamcinolone cheap aristocort 10mg
buy tadalafil tablets tadalafil 5mg ca order cialis 40mg