2011-06-10 9 views
5

http://ant.apache.org/manual/Tasks/exec.html से:चींटी बिल्ड स्क्रिप्ट से एक इंटरैक्टिव एप्लिकेशन निष्पादित करने के लिए कैसे?

ध्यान दें कि आप काँटेदार कार्यक्रम के साथ बातचीत नहीं कर सकते हैं, एक ही रास्ता इनपुट भेजने के लिए इसका इनपुट और inputstring विशेषताओं के माध्यम से है। यह भी ध्यान दें कि एंटी 1.6 के बाद , फोर्क किए गए प्रोग्राम में इनपुट पढ़ने का कोई भी प्रयास एक ईओएफ (-1) प्राप्त करेगा। यह एंटी 1.5 से में परिवर्तन है, जहां इस तरह का प्रयास अवरुद्ध होगा।

मैं इंटरेक्टिव कंसोल प्रोग्राम को एंटी से कैसे लॉन्च और इंटरैक्ट कर सकता हूं?

मैं जो करना चाहता हूं वह drush sqlc कार्यक्षमता के समान है, जो उचित डेटाबेस प्रमाण-पत्रों का उपयोग करके mysql क्लाइंट दुभाषिया लॉन्च करता है, लेकिन इस उपयोग के मामले तक सीमित नहीं है।

<project name="mysql"> 
    <target name="mysql"> 
    <exec executable="mysql"> 
     <arg line="-uroot -p"/> 
    </exec> 
    </target> 
</project> 

का उपयोग करते समय चींटी रन:

$ ant -f mysql.xml mysql 
Buildfile: /home/ceefour/tmp/mysql.xml 

mysql: 
Enter password: 

BUILD SUCCESSFUL 
Total time: 2 seconds 

पासवर्ड inputting के बाद, यह तुरंत बाहर निकल जाता है

यहां नमूने के उपयोग के मामले में है।

क्या होता है जब खोल (अपेक्षित व्यवहार) पर सीधे क्रियान्वित करने के साथ इस की तुलना करें:

$ mysql -uroot -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 1122 
Server version: 5.1.58-1ubuntu1 (Ubuntu) 

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 
This software comes with ABSOLUTELY NO WARRANTY. This is free software, 
and you are welcome to modify and redistribute it under the GPL v2 license 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

उत्तर

0

मैं cosnole पर चल रहा है की कोशिश की है और यदि आप कांटा नहीं है यह काम करता है। जैसा कि दस्तावेज़ में भी उल्लेख किया गया है।

ग्रहण के अलावा, inputhandler को कॉन्फ़िगर करने के अतिरिक्त तरीके हैं।

जैसा कि यहां स्वीकार किया गया है। http://www.coderanch.com/t/419646/tools/java-program-accept-user-input

एक साफ रास्ता यह काम http://www.myeclipseide.com/PNphpBB2-viewtopic-t-25337.html

+0

यह मेरे उपयोग के मामले में काम नहीं कर रहा है (संशोधित प्रश्न देखें)। क्या आप अपने सिस्टम में अपनी चींटी स्क्रिप्ट का परीक्षण कर सकते हैं और अगर यह काम करता है तो मुझे बताएं? –

1

आप एक खोल के माध्यम से अपने आदेश शुरू कर सकते हैं, से// /dev/tty करने के लिए मानक इनपुट/आउटपुट/त्रुटि पुनः निर्देशित है, जो इस प्रक्रिया के controlling terminal से मेल खाती है पाने के लिए ।

<target name="dbshell" description="Open a shell for interactive tasks"> 
    <exec executable="/bin/sh"> 
    <arg value="-c"/> 
    <arg value="mysql -u root -p &lt; /dev/tty &gt; /dev/tty 2&gt; /dev/tty"/> 
    </exec> 
</target> 
संबंधित मुद्दे